package dominio;

import java.util.ArrayList;

/**
 * Esta clase contiene los datos de los records que se han ido acumulando en
 * las partidas terminadas, tanto de los jugadores humanos como de los que
 * corresponden a la CPU.
 */


public class Ranking {
    
    static class Record{
        String name;
        int score;
        int time;
        int level;
        
        public Record(){
            name = null;
            score = 0;
            time = 0;
            level = 0;
        }
    }
    
    
    private int id;
    private ArrayList<Record> llista;
    
    public int getId() {
        return id;
    }
    
    public void setId(int id) {
        this.id = id;
    }
     
    public Ranking() {
      setId(0);
      llista = new ArrayList<Record>();
    }
     
    public ArrayList<Record> getLista(int id) {
      return llista;
    }
    /** 
     * Aquesta funció rep un jugador guanyador i el nivell. Introdueix a la llista
     * els valors del jugador (nom, puntuació, tempspartida, nivell) de
     * de la partida ja finalitzada.
     * @param jug
     * @param nivell
     * @return Retorna la llista endreçada amb el record del jugador introduit
     */
    
    public boolean addRecord(Jugador jug, int nivell) {
        Record r;
        r = new Record();
        int i;
        int n = this.llista.size();
        r.name = jug.getNom();
        r.score = jug.getPuntuacio();
        r.time = jug.getTempspartida();
        r.level = nivell;
        for (i=0; i<n ;i++){
            Record rl;
            rl = llista.get(i);
            if ((rl.level < r.level) || (rl.level == r.level && rl.score < r.score) || (rl.level == r.level && rl.score == r.score && rl.time >= r.time)){
                this.llista.add(i,r);
                return true;
            }
        }
        this.llista.add(r);
        llista.ensureCapacity(1);
        return true;
        }
    
}
